home *** CD-ROM | disk | FTP | other *** search
/ SuperHack / SuperHack CD.bin / CODING / DEMOS / SINE-SRC.ZIP / SINE.ASM < prev    next >
Encoding:
Assembly Source File  |  1995-02-05  |  2.6 KB  |  78 lines

  1.  
  2. ;
  3. ; small example for offsetting a sinus-wave trough a picture
  4. ; code by ash/OZN/BD, gfx by ??.. grabbed out of a intro of TRSI..
  5. ; big credits goto diz dude..
  6. ;
  7.  
  8. code segment
  9. assume cs:code
  10. p386
  11. org 100h
  12.  
  13. start:          cli                             ; clear interrupts
  14.                              
  15.                 mov     ax,13h                  ; goto 320x200x256 mode
  16.                 int     10h                     ; standart BIOS-mode
  17.                 push    0a000h                  ; make destenation vgasegment
  18.                 pop     es
  19.  
  20.                 mov     si,offset pal           ; offset palette
  21.                 mov     dx,3c8h
  22.                 xor     al,al
  23.                 mov     cx,256*3
  24.                 out     dx,al
  25.                 inc     dx
  26.                 repz    outsb
  27.  
  28.         xor    ax,ax            ; make ax zero
  29.  
  30. mainloopz:      mov     bx,ax                   ; ax is startpos. in bx
  31.                 mov     cx,91                   ; 91 = picture height
  32.  
  33.                 mov     si,offset pic           ; offset picture
  34.                 mov     di,320*50               ; mov 50*320 into di
  35.  
  36. vsineloop:      push    cx                      ; push cx
  37.                 mov     bp,sine+bx              ; make bp the sinechar
  38.                 add     di,bp                   ; add bp to di
  39.  
  40.                 mov     cx,80                   ; make cx 320/4 (=80)
  41.                 repz    movsd                   ; move string double word
  42.  
  43.                 sub     di,bp                   ; di - bp
  44.                 add     bx,2                    ; bx + 2
  45.                 pop     cx                      ; pop cx
  46.                 loop    vsineloop               ; loop
  47.  
  48.                 add     ax,4                    ; ax + 4
  49.                 cmp     ax,256                  ; compare ax with 256
  50.                 jne     no256                   ; jump if not equal
  51.                 mov     ax,0                    ; make ax 0
  52.  
  53. no256:          push    ax            ; push ax
  54.         mov     dx,3dah                 ; vertical retrace
  55.                 in      al,dx
  56.                 test    al,8
  57.                 je      $-3
  58.  
  59.                 in      al,60h                  ; check for escape
  60.                 cmp     al,1
  61.         pop    ax            ; pop ax
  62.                 je      outnow
  63.         jmp    mainloopz
  64.  
  65. outnow:         mov     ax,3                    ; goto 25x80x16 mode
  66.                 int     10h
  67.                 mov     ax,4c00h                ; goto OS
  68.                 int     21h
  69.  
  70.  
  71. include         pal.db
  72. include         pic.db
  73. include         sine.db
  74.  
  75. code ends
  76. end start
  77.  
  78.